---
title: Telemetry
sidebar_label: Telemetry
---

In this section, you will find a description of the DevPod telemetry - why we are collecting telemetry, what data points are we gathering, where we are sending the data, and how to opt-out.


### Why do we collect telemetry

Because DevPod is a freely available open-source project, we as maintainers have a very limited idea of how the project is being used, and very limited possibilities to gather this information from the users. Without reliable information, it is difficult to make decisions about the prioritization of features, test automation, or bug fixes. Deprecation of the flags and features turns into guesswork, and removal becomes nearly impossible.
To move forward quickly, and ensure long-term maintainability, we will be making decisions about new features, deprecations, prioritizing test coverage, etc., and we want these decisions to be data-driven.


### What are we collecting and how

When a user executes a non-trivial CLI command, one that loads the configuration, the CLI will send an event about the command and basic information about the execution environment (Operating system, CPU architecture, DevPod version, etc.). Another event is sent if a command fails, or when it takes longer than 10 seconds to complete. The events are sent to our self-hosted backend.  
We want to emphasize that we are **not interested in collecting data about individuals** that are using DevPod, we are collecting **only data about how it is being used**. This should be evident from the code that implements telemetry on the CLI side, which is of course open source and included in the same source code repository.

### Telemetry payload example

Below you can find an example of the payload that DevPod CLI would send to our telemetry backend.

```yaml
{
  "event":{
    "type":"devpod_cli",                   # type of event
    "machine_id":"3ed2c7...ee308e6",  # securely hashed machine ID to de-duplicate information received from the same user
    "timestamp":1683878643781772,
    "properties": {
      "command":"devpod provider delete",   # the CLI command that was executed
      "provider":"kubernetes",              # the default provider
      "source_type":"git:",                 # the workspace source type (git, image, local, container, unknown)
      "ide":"vscode",                       # the IDE used to open a workspace
      "desktop":"true",                     # whether this cli command has been executed by DevPod Desktop or is a direct CLI invocation
      "version":"v0.5.29",                  # the CLI version
      "error":"provider 'docker' does not exist" # an error that occurred during command execution
    }
  },
  "user":{
    "machine_id":"3ed2c7...ee308e6",  # securely hashed machine ID to de-duplicate information received from the same user
    "arch":"amd64",                   # CPU architecture
    "os":"linux",                     # Operating system
  },
}
```

### Telemetry opt-out process

To disable the telemetry, set the environment variable `DEVPOD_DISABLE_TELEMETRY=true`. It can also be opted out for individual context by executing the following command:

```bash
devpod context set-options -o TELEMETRY=false
```
